// 当然，我可以再次提供JavaScript中快速排序算法的实现。这次我将使用一个更常见的快速排序版本，即Lomuto分区方案。以下是代码：

// javascript
function quickSort(arr, left = 0, right = arr.length - 1) {
  if (left < right) {
    let pivotIndex = partition(arr, left, right);
    quickSort(arr, left, pivotIndex - 1);
    quickSort(arr, pivotIndex + 1, right);
  }
  return arr;
}

function partition(arr, left, right) {
  let pivot = arr[right]; // 选择最右边的元素作为基准值
  let i = left;

  for (let j = left; j < right; j++) {
    if (arr[j] < pivot) {
      // 交换小于基准值的元素到左边
      [arr[i], arr[j]] = [arr[j], arr[i]];
      i++;
    }
  }

  // 将基准值放到正确的位置上
  [arr[i], arr[right]] = [arr[right], arr[i]];

  return i; // 返回基准值的索引
}

// 测试代码
let arr = [3, 6, 8, 10, 1, 2, 1];
console.log(quickSort(arr)); // 输出: [1, 1, 2, 3, 6, 8, 10]

// 在这个实现中，quickSort 函数接收一个数组以及可选的左右索引参数，用于指定当前需要排序的子数组的范围。partition 函数用于将数组分为两部分，使得左边所有的元素都小于或等于基准值，而右边的所有元素都大于基准值。基准值通常选择为子数组的最后一个元素，但也可以选择其他策略。

// partition 函数通过遍历数组，将小于基准值的元素交换到左边，同时维护一个索引 i，指向当前左边区域的最大索引。最后，将基准值放到索引 i 的位置上，并返回这个索引。

// 然后，quickSort 函数递归地对基准值左右两边的子数组进行快速排序，直到整个数组都排好序。

// 请注意，这个实现使用了原地排序，即直接在原数组上进行排序，而不是创建一个新的数组。这也意味着原数组会在排序过程中被修改。

export {};
